package com.demo.java.OD151_200.OD171;

import java.util.*;

/**
 * @author bug菌
 * @Source 公众号：猿圈奇妙屋
 * @des： 【叠放书籍】问题
 * @url： https://blog.csdn.net/weixin_43970743/article/details/145782296
 */
public class OdMain {
    public static void main(String[] args) {
        Scanner input = new Scanner(System.in);

        // 读取输入
        String[] arr = input.nextLine().split(",");
        int[] lst = new int[arr.length];
        for (int i = 0; i < arr.length; i++) {
            lst[i] = Integer.parseInt(arr[i]);
        }

        // 将宽度和高度分别为一对元组，存入列表
        List<Pair<Integer, Integer>> books = new ArrayList<>();
        for (int i = 0; i < lst.length; i += 2) {
            books.add(new Pair<>(lst[i], lst[i + 1]));
        }

        // 按宽度升序，如果宽度相同则按高度降序排序
        books.sort((a, b) -> {
            if (a.getKey().equals(b.getKey())) {
                return b.getValue() - a.getValue();
            }
            return a.getKey() - b.getKey();
        });

        int n = books.size();

        // 动态规划数组，初始每本书可以堆叠自己
        int[] dp = new int[n];
        Arrays.fill(dp, 1);

        // 填充动态规划数组
        for (int i = 1; i < n; i++) {
            for (int j = 0; j < i; j++) {
                if (books.get(i).getValue() > books.get(j).getValue()) {
                    dp[i] = Math.max(dp[j] + 1, dp[i]);
                }
            }
        }

        // 输出结果，最大堆叠数
        int maxStackedBooks = Arrays.stream(dp).max().orElse(0);
        System.out.println(maxStackedBooks);
    }

    // 辅助类，用于存储宽度和高度
    static class Pair<K, V> {
        private final K key;
        private final V value;

        public Pair(K key, V value) {
            this.key = key;
            this.value = value;
        }

        public K getKey() {
            return key;
        }

        public V getValue() {
            return value;
        }
    }
}